/*!
 @file file_doc.h
 @brief Document all files in GameEngine.
 @details This file provides some documentation for all other files in GameEngine.
 */

//============================================

/*!
 @file GameEngine.main_page
 @brief Define the header of the documentation of GameEngine.
 @details Header of the GameEngine documentation.
 */

//============================================

/*!
 @file namespace_doc.h
 @brief Document all namespaces in GameEngine.
 @details This file provides some documentation for all namespaces in GameEngine.
 */

//============================================

/*!
 @file _defs.h
 @brief Miscellaneous definitions for the behavior of the GameEngine package.
 @details Defines many different typedefs that allow to customize GameEngine, e.g., toggle the
          GameEngine namespace, export functions in appropriate DLLs, etc.
 */

//============================================

/*!
 @file ai_settings.h
 @brief Define macros to export functions of the Algorithms library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file funnel.h
 @brief Definition of the API for path-finding using the funnel-search algorithm.
 @details A funnel is a set of connected triangles, where triangle k is only connected to
          triangles k-1 and k+1.
 */

//============================================

/*!
 @file funnel.hpp
 @brief Implementation of path-finding functions using the funnel-search algorithm.
 @details A funnel is a set of connected triangles, where triangle k is only connected to
          triangles k-1 and k+1.
 */

//============================================

/*!
 @file astar.h
 @brief Definition of the API for path-finding using the A-star algorithm.
 @details The A-star algorithm is templated to maximize its reusability.
 */

//============================================

/*!
 @file astar.hpp
 @brief Implementation of path-finding routines using the A-star algorithm.
 @details The A-star algorithm is templated to maximize its reusability.
 */

//============================================

/*!
 @file astar_node.h
 @brief Definition of a node to be used in the A-star algorithm.
 @details A A-star node stores pieces of information about the current and the parent
          node, as well as the total cost spent so far to reach the current node.<br>
		  <br>
          The A-star node is templated to maximize its reusability.
 */

//============================================

/*!
 @file astar_node.hpp
 @brief Implementation of a node to be used in the A-star algorithm.
 @details A A-star node stores pieces of information about the current and the parent
          node, as well as the total cost spent so far to reach the current node.<br>
		  <br>
          The A-star node is templated to maximize its reusability.
 */

//============================================

/*!
 @file heuristic_default.h
 @brief Definition of a default heuristic, typically to be used in cunjunction with the A-star algorithm.
 @details The default heuristic always returns 0, i.e., none of the nodes is favored by
          the A-star algorithm. Please note that in most cases, this heuristic will be
          the slowest possible - it is therefore strongly recommended to use a different
          heuristic if possible.<br>
		  <br>
          The default heuristic is templated to maximize its reusability.
 */

//============================================

/*!
 @file heuristic_default.hpp
 @brief Implementation of a default heuristic, typically to be used in cunjunction with the A-star algorithm.
 @details The default heuristic always returns 0, i.e., none of the nodes is favored by
          the A-star algorithm. Please note that in most cases, this heuristic will be
          the slowest possible - it is therefore strongly recommended to use a different
          heuristic if possible.<br>
		  <br>
          The default heuristic is templated to maximize its reusability.
 */

//============================================

/*!
 @file core_settings.h
 @brief Define macros to export functions of the Core library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file rtti.h
 @brief Definition of RTTI support for dynamic information on the classes.
 @details RTTI stands for Run-Time Type Information.
 */

//============================================

/*!
 @file rtti.cpp
 @brief Implementation of RTTI support for dynamic information on the classes.
 @details RTTI stands for Run-Time Type Information.
 */

//============================================

/*!
 @file data_element.h
 @brief Definition of low-level data access classes.
 @details The data access is typically meant to be used from/to a file, but it not
          limited to this purpose (it could e.g. be used from/to a stream)
 */

//============================================

/*!
 @file data_element.hpp
 @brief Implementation of low-level data access classes.
 @details The data access is typically meant to be used from/to a file, but it not
          limited to this purpose (it could e.g. be used from/to a stream)
 */

//============================================

/*!
 @file data_type.h
 @brief Definition of utility functions to manipulate data types.
 @details Type access works using template class specialization
 */

//============================================

/*!
 @file data_type.hpp
 @brief Implementation of utility functions to manipulate data types.
 @details Type access works using template class specialization
 */

//============================================

/*!
 @file factory_builder.h
 @brief Definition of an interface class for creating objects.
 @details The concrete implementation of the objects is deferred to the derived classes.
 */

//============================================

/*!
 @file factory_builder.cpp
 @brief Implementation of an interface class for creating objects.
 @details The concrete implementation of the objects is deferred to the derived classes.
 */

//============================================

/*!
 @file factory_manager.h
 @brief Definition of a manager for implementing objects from their class type.
 @details The factory uses factory builder bindings to create the actual objects.
 */

//============================================

/*!
 @file factory_manager.hpp
 @brief Implementation of a manager for implementing objects from their class type.
 @details The factory uses factory builder bindings to create the actual objects.
 */

//============================================

/*!
 @file fileio.h
 @brief Definition of a class that facilitates low-level input/output file access.
 @details This class should only be used for low-level data access.
 */

//============================================

/*!
 @file fileio.cpp
 @brief Implementation of a class that facilitates low-level input/output file access.
 @details This class should only be used for low-level data access.
 */

//============================================

/*!
 @file graph.h
 @brief Definition of a generic graph structure.
 @details The graph is made of graph nodes, connected to each other by graph links.<br>
          <br>
          The graph is templated to maximize its reusability.
 */

//============================================

/*!
 @file graph.hpp
 @brief Implementation of a generic graph structure.
 @details The graph is made of graph nodes, connected to each other by graph links.<br>
          <br>
          The graph is templated to maximize its reusability.
 */

//============================================

/*!
 @file graph_link.h
 @brief Definition of a graph link class, that allows to join two different nodes in a graph.
 @details A graph link can be associated any type of data.<br>
          <br>
          The graph link is templated to maximize its reusability.
 */

//============================================

/*!
 @file graph_link.hpp
 @brief Implementation of a graph link class, that allows to join two different nodes in a graph.
 @details A graph link can be associated any type of data.<br>
          <br>
          The graph link is templated to maximize its reusability.
 */

//============================================

/*!
 @file graph_node.h
 @brief Definition of a node in a graph.
 @details A graph node can be associated any type of data.<br>
          <br>
          The graph node is templated to maximize its reusability.
 */

//============================================

/*!
 @file graph_node.hpp
 @brief Implementation of a node in a graph.
 @details A graph node can be associated any type of data.<br>
          <br>
          The graph node is templated to maximize its reusability.
 */

//============================================

/*!
 @file octree.h
 @brief Definition of an octree data structure.
 @details An octree structure allows to split a three-dimensional space recursively
          into eight sub-spaces. It is optimized to accelerate data queries.
 */

//============================================

/*!
 @file octree.hpp
 @brief Implementation of an octree data structure.
 @details An octree structure allows to split a three-dimensional space recursively
          into eight sub-spaces. It is optimized to accelerate data queries.
 */

//============================================

/*!
 @file octree_node.h
 @brief Definition of a node in an octree.
 @details An octree node may either have children, or be a low-level node with
          no children.<br>
          <br>
          An iterator may be used to explore the nodes of an octree in several
          different manners, including all tree nodes, low-level nodes or non-empty
          nodes.
 */

//============================================

/*!
 @file octree_node.hpp
 @brief Implementation of a node in an octree.
 @details An octree node may either have children, or be a low-level node with
          no children.<br>
          <br>
          An iterator may be used to explore the nodes of an octree in several
          different manners, including all tree nodes, low-level nodes or non-empty
          nodes.
 */

//============================================

/*!
 @file quadtree.h
 @brief Definition of a quad tree data structure.
 @details A quad tree structure allows to split a two-dimensional space recursively
          into four sub-spaces. It is optimized to accelerate data queries.
 */

//============================================

/*!
 @file quadtree.hpp
 @brief Implementation of a quad tree data structure.
 @details A quad tree structure allows to split a two-dimensional space recursively
          into four sub-spaces. It is optimized to accelerate data queries.
 */

//============================================

/*!
 @file quadtree_node.h
 @brief Definition of a node in a quad tree.
 @details A quad tree node may either have children, or be a low-level node with
          no children.<br>
          <br>
          An iterator may be used to explore the nodes of a quad tree in several
          different manners, including all tree nodes, low-level nodes or non-empty
          nodes.
 */

//============================================

/*!
 @file quadtree_node.hpp
 @brief Implementation of a node in a quad tree.
 @details A quad tree node may either have children, or be a low-level node with
          no children.<br>
          <br>
          An iterator may be used to explore the nodes of a quad tree in several
          different manners, including all tree nodes, low-level nodes or non-empty
          nodes.
 */

//============================================

/*!
 @file macro_singleton.h
 @brief Define two macros that can be used to very quickly setup a singleton class.
 @details Provide a pre-built definition / implementation of a singleton class.
 */

//============================================

/*!
 @file allocator_default.h
 @brief Definition of a default memory allocator.
 @details The default memory allocator allocates / desallocates memory using the
          standard C++ new / delete operators.
 */

//============================================

/*!
 @file allocator_default.hpp
 @brief Implementation of a default memory allocator.
 @details The default memory allocator allocates / desallocates memory using the
          standard C++ new / delete operators.
 */

//============================================

/*!
 @file memory_manager.h
 @brief Definition of a class handling memory management.
 @details The memory manager tracks memory usage in a program.
 */

//============================================

/*!
 @file memory_manager.cpp
 @brief Implementation of a class handling memory management.
 @details The memory manager tracks memory usage in a program.
 */

//============================================

/*!
 @file owned_ptr.h
 @brief Definition of a pointer that can, optionally, own its memory.
 @details The owned pointer is quite similar to the std::auto_ptr class, but
          does not release pointer ownership when a copy of the owned pointer
		  is made. Instead, the owned pointer class uses a doubly-linked list
		  structure to keep track of all copies of the owned pointer. This
		  structure is quite costly, though, so this class should be used
		  sparingly.
 */

//============================================

/*!
 @file owned_ptr.hpp
 @brief Implementation of a pointer that can, optionally, own its memory.
 @details The owned pointer is quite similar to the std::auto_ptr class, but
          does not release pointer ownership when a copy of the owned pointer
		  is made. Instead, the owned pointer class uses a doubly-linked list
		  structure to keep track of all copies of the owned pointer. This
		  structure is quite costly, though, so this class should be used
		  sparingly.
 */

//============================================

/*!
 @file ptr_resource.h
 @brief Definition of a pointer resource.
 @details A resource is an element that can be shared between several different
          users. It takes care of its own memory desallocation.
 */

//============================================

/*!
 @file ptr_resource.hpp
 @brief Implementation of a pointer resource.
 @details A resource is an element that can be shared between several different
          users. It takes care of its own memory desallocation.
 */

//============================================

/*!
 @file resource.h
 @brief Definition of a resource manager.
 @details A resource manager is an object that takes care of garbage collection, when
          some shared data are no more used by any client.
 */

//============================================

/*!
 @file resource.hpp
 @brief Implementation of a resource manager.
 @details A resource manager is an object that takes care of garbage collection, when
          some shared data are no more used by any client.
 */

//============================================

/*!
 @file color.h
 @brief Definition of various color conversion functions.
 @details These functions allow to switch between color spaces.
 */

//============================================

/*!
 @file color.cpp
 @brief Implementation of various color conversion functions.
 @details These functions allow to switch between color spaces.
 */

//============================================

/*!
 @file color_hsv.h
 @brief Definition of a color in the HSV/HSVA color spaces.
 @details These classes are optimized for fast queries to the HSV/HSVA components of the color.
 */

//============================================

/*!
 @file color_hsv.cpp
 @brief Implementation of a color in the HSV/HSVA color spaces.
 @details These classes are optimized for fast queries to the HSV/HSVA components of the color.
 */

//============================================

/*!
 @file color_rgb.h
 @brief Definition of a color in the RGB/RGBA color spaces.
 @details These classes are optimized for fast queries to the RGB/RGBA components of the color.
 */

//============================================

/*!
 @file color_rgb.cpp
 @brief Implementation of a color in the RGB/RGBA color spaces.
 @details These classes are optimized for fast queries to the RGB/RGBA components of the color.
 */

//============================================

/*!
 @file mersenne_twister.h
 @brief Definition and implementation of the Mersenne Twister pseudo-random number generator.
 @details Based on code by Makoto Matsumoto, Takuji Nishimura, and Shawn Cokus<br>
          Version from Richard J. Wagner - v1.0, 15 May 2003, rjwagner@writeme.com
          <br>
          The Mersenne Twister is an algorithm for generating random numbers.  It
          was designed with consideration of the flaws in various other generators.
          The period, 2^19937-1, and the order of equidistribution, 623 dimensions,
          are far greater.  The generator is also fast; it avoids multiplication and
          division, and it benefits from caches and pipelines.  For more information
          see the inventors' web page at http://www.math.keio.ac.jp/~matumoto/emt.html
		  <br>
          Reference:<br>
          M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623-Dimensionally
		  Equidistributed Uniform Pseudo-Random Number Generator", ACM Transactions on
		  Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.
 */

//============================================

/*!
 @file observer.h
 @brief Definition of an observer pattern.
 @details The observer pattern allows a set of objects (aka the observers) to be notified
          when the state of the observed object (aka the subject) is modified.
 */

//============================================

/*!
 @file observer.cpp
 @brief Implementation of an observer pattern.
 @details The observer pattern allows a set of objects (aka the observers) to be notified
          when the state of the observed object (aka the subject) is modified.
 */

//============================================

/*!
 @file string.h
 @brief Definition of a string in the GameEngine format.
 @details GameEngine strings are currently wrappers to STL strings. The compatibility
          with Qt strings is currently not supported, but is expected to be acceptable
          in future versions of GameEngine.
 */

//============================================

/*!
 @file string.cpp
 @brief Implementation of a string in the GameEngine format.
 @details GameEngine strings are currently wrappers to STL strings. The compatibility
          with Qt strings is currently not supported, but is expected to be acceptable
          in future versions of GameEngine.
 */

//============================================

/*!
 @file timer.h
 @brief Definition of a class able to measure very small times.
 @details This class is typically meant for benchmarks.
 */

//============================================

/*!
 @file timer.cpp
 @brief Implementation of a class able to measure very small times.
 @details This class is typically meant for benchmarks.
 */

//============================================

/*!
 @file main.cpp
 @brief Main file, essentially used to test the GameEngine framework.
 @details Not to be used by client code. Still, this file provides an example of how to use GameEngine.
 */

//============================================

/*!
 @file dice.h
 @brief Implementation of a dice.
 @details The dice can have any number of sides, even though some utility functions
          allow to generate directly the most frequent types of dice. A dice can be
          rolled using the Mersenne Twister algorithm (see the MTRand class for more
          details).
 */

//============================================

/*!
 @file dice.cpp
 @brief Definition of a dice.
 @details The dice can have any number of sides, even though some utility functions
          allow to generate directly the most frequent types of dice. A dice can be
          rolled using the Mersenne Twister algorithm (see the MTRand class for more
          details).
 */

//============================================

/*!
 @file gameplay_settings.h
 @brief Define macros to export functions of the Gameplay library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file geometry_settings.h
 @brief Define macros to export functions of the Geometry library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file intersection_defs.h
 @brief Definition of several types of intersections that can occur with collision detection.
 @details This is solely an intersection descriptor. The actual impact between two geometric
          shapes has to be computed separately.
 */

//============================================

/*!
 @file type_defs.h
 @brief Definition of several geometric shapes, with predefined levels of numeric precision.
 @details This file defines pre-built shapes for convenience of the developpers.
 */

//============================================

/*!
 @file transformer2d_orientation.h
 @brief Definition of a 2D orientation transformer.
 @details This class allows to convert 2D orientations from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer2d_orientation.hpp
 @brief Implementation of a 2D orientation transformer.
 @details This class allows to convert 2D orientations from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer3d_orientation.h
 @brief Definition of a 3D orientation transformer.
 @details This class allows to convert 3D orientations from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer3d_orientation.hpp
 @brief Implementation of a 3D orientation transformer.
 @details This class allows to convert 3D orientations from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer2d.h
 @brief Definition of a 2D point transformer.
 @details This class allows to convert 2D points from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer2d.hpp
 @brief Implementation of a 2D point transformer.
 @details This class allows to convert 2D points from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer3d.h
 @brief Definition of a 3D point transformer.
 @details This class allows to convert 3D points from the source to the destination spaces.
 */

//============================================

/*!
 @file transformer3d.hpp
 @brief Implementation of a 3D point transformer.
 @details This class allows to convert 3D points from the source to the destination spaces.
 */

//============================================

/*!
 @file angle.h
 @brief Definition of a utility class to manipulate angles.
 @details This class allows to manipulate angles defined in several angle systems.
 */

//============================================

/*!
 @file angle.hpp
 @brief Implementation of a utility class to manipulate angles.
 @details This class allows to manipulate angles defined in several angle systems.
 */

//============================================

/*!
 @file coords2d.h
 @brief Definition of 2D parametric coordinates.
 @details The first and second parametric coordinates are respectively called U and V.
 */

//============================================

/*!
 @file coords2d.hpp
 @brief Implementation of 2D parametric coordinates.
 @details The first and second parametric coordinates are respectively called U and V.
 */

//============================================

/*!
 @file coords3d.h
 @brief Definition of 3D parametric coordinates.
 @details The first, second and third parametric coordinates are respectively called U, V and W.
 */

//============================================

/*!
 @file coords3d.hpp
 @brief Implementation of 3D parametric coordinates.
 @details The first, second and third parametric coordinates are respectively called U, V and W.
 */

//============================================

/*!
 @file quaternion.h
 @brief Definition of a quaternion object.
 @details Quaternions are objects that allow easy manipulation of angles, based
          on an extension of the complex numbers.
 */

//============================================

/*!
 @file quaternion.hpp
 @brief Implementation of a quaternion object.
 @details Quaternions are objects that allow easy manipulation of angles, based
          on an extension of the complex numbers.
 */

//============================================

/*!
 @file line2d.h
 @brief Definition of a 2D line.
 @details Lines are the base of intersection computation.
 */

//============================================

/*!
 @file line2d.hpp
 @brief Implementation of a 2D line.
 @details Lines are the base of intersection computation.
 */

//============================================

/*!
 @file line3d.h
 @brief Definition of a 3D line.
 @details Lines are the base of intersection computation.
 */

//============================================

/*!
 @file line3d.hpp
 @brief Implementation of a 3D line.
 @details Lines are the base of intersection computation.
 */

//============================================

/*!
 @file point2d.h
 @brief Definition of a 2D point.
 @details A 2D point has two coordinates, named X and Y.
 */

//============================================

/*!
 @file point2d.hpp
 @brief Implementation of a 2D point.
 @details A 2D point has two coordinates, named X and Y.
 */

//============================================

/*!
 @file point3d.h
 @brief Definition of a 3D point.
 @details A 2D point has two coordinates, named X, Y and Z.
 */

//============================================

/*!
 @file point3d.hpp
 @brief Implementation of a 3D point.
 @details A 2D point has two coordinates, named X, Y and Z.
 */

//============================================

/*!
 @file vector2d.h
 @brief Definition of a 2D vector.
 @details A 2D vector provides facility operators for
          addition/multiplication/etc...
 */

//============================================

/*!
 @file vector2d.hpp
 @brief Implementation of a 2D vector.
 @details A 2D vector provides facility operators for
          addition/multiplication/etc...
 */

//============================================

/*!
 @file vector3d.h
 @brief Definition of a 3D vector.
 @details A 3D vector provides facility operators for
          addition/multiplication/etc...
 */

//============================================

/*!
 @file vector3d.hpp
 @brief Implementation of a 3D vector.
 @details A 3D vector provides facility operators for
          addition/multiplication/etc...
 */

//============================================

/*!
 @file box2d.h
 @brief Definition of an axis-aligned 2D box.
 @details A 2D box is defined by minimum and maximum X and Y values.
 */

//============================================

/*!
 @file box2d.hpp
 @brief Implementation of an axis-aligned 2D box.
 @details A 2D box is defined by minimum and maximum X and Y values.
 */

//============================================

/*!
 @file circle2d.h
 @brief Definition of a 2D circle.
 @details A 2D circle is represented by its center and its radius.
 */

//============================================

/*!
 @file circle2d.hpp
 @brief Implementation of a 2D circle.
 @details A 2D circle is represented by its center and its radius.
 */

//============================================

/*!
 @file circle3d.h
 @brief Definition of a circle embedded in a 3D space.
 @details Even though it is embedded in a 3D space, the circle still is a planar object.
 */


//============================================

/*!
 @file circle3d.hpp
 @brief Implementation of a circle embedded in a 3D space.
 @details Even though it is embedded in a 3D space, the circle still is a planar object.
 */

//============================================

/*!
 @file hexagon2d.h
 @brief Definition of a 2D hexagon.
 @details A 2D hexagon is represented by its origin and one orientation axis.
 */

//============================================

/*!
 @file hexagon2d.hpp
 @brief Implementation of a 2D hexagon.
 @details A 2D hexagon is represented by its origin and one orientation axis.
 */

//============================================

/*!
 @file parallelogram2d.h
 @brief Definition of a 2D parallelogram.
 @details A 2D parallelogram is represented by its origin and its two axes.
 */

//============================================

/*!
 @file parallelogram2d.hpp
 @brief Implementation of a 2D parallelogram.
 @details A 2D parallelogram is represented by its origin and its two axes.
 */

//============================================

/*!
 @file parallelogram3d.h
 @brief Definition of a parallelogram embedded in a 3D space.
 @details Even though it is embedded in a 3D space, the parallelogram still is a planar object.
 */

//============================================

/*!
 @file parallelogram3d.hpp
 @brief Implementation of a parallelogram embedded in a 3D space.
 @details Even though it is embedded in a 3D space, the parallelogram still is a planar object.
 */

//============================================

/*!
 @file plane3d.h
 @brief Definition of a plane embedded in a 3D space.
 @details The plane is represented by one point and a normal orientation.
 */

//============================================

/*!
 @file plane3d.hpp
 @brief Implementation of a plane embedded in a 3D space.
 @details The plane is represented by one point and a normal orientation.
 */

//============================================

/*!
 @file polygon3d.h
 @brief Definition of a polygon embedded in a 3D space.
 @details A polygon is made of a set of 3D points.
 */

//============================================

/*!
 @file polygon3d.hpp
 @brief Implementation of a polygon embedded in a 3D space.
 @details A polygon is made of a set of 3D points.
 */

//============================================

/*!
 @file trgl2d.h
 @brief Definition of a triangle embedded in a 2D space.
 @details Provides ways to manipulate 2D triangles.
 */

//============================================

/*!
 @file trgl2d.hpp
 @brief Implementation of a triangle embedded in a 2D space.
 @details Provides ways to manipulate 2D triangles.
 */

//============================================

/*!
 @file trgl2d_defs.h
 @brief Definition of a common API for both the Trgl2d and the Trgl2dFast classes.
 @details This class defines a set of macros for 2D triangle manipulation.
 */

//============================================

/*!
 @file trgl2dfast.h
 @brief Definition of a triangle embedded in a 2D space.
 @details Provides ways to manipulate 2D triangles.<br>
          <br>
		  This class is optimized for fast geometric queries.
 */

//============================================

/*!
 @file trgl2dfast.hpp
 @brief Implementation of a triangle embedded in a 2D space.
 @details Provides ways to manipulate 2D triangles.<br>
          <br>
		  This class is optimized for fast geometric queries.
 */

//============================================

/*!
 @file trgl3d.h
 @brief Definition of a triangle embedded in a 3D space.
 @details Even though it is embedded in a 3D space, the triangle still is a planar object.
 */

//============================================

/*!
 @file trgl3d.hpp
 @brief Implementation of a triangle embedded in a 3D space.
 @details Even though it is embedded in a 3D space, the triangle still is a planar object.
 */

//============================================

/*!
 @file trgl3d_defs.h
 @brief Definition of a common API for both the Trgl3d and the Trgl3dFast classes.
 @details This class defines a set of macros for 3D triangle manipulation.
 */

//============================================

/*!
 @file trgl3dfast.h
 @brief Definition of a triangle embedded in a 3D space.
 @details This class is optimized for fast geometric queries.<br>
          <br>
		  Even though it is embedded in a 3D space, the triangle still is a planar object.
 */

//============================================

/*!
 @file trgl3dfast.hpp
 @brief Implementation of a triangle embedded in a 3D space.
 @details This class is optimized for fast geometric queries.<br>
          <br>
		  Even though it is embedded in a 3D space, the triangle still is a planar object.
 */

//============================================

/*!
 @file halfedge.h
 @brief Definition of a half-edge data structure (with half-edge faces and vertices).
 @details This class provides low-level functions to describe the topology of a mesh.
 */

//============================================

/*!
 @file halfedge.hpp
 @brief Implementation of a half-edge data structure (with half-edge faces and vertices).
 @details This class provides low-level functions to describe the topology of a mesh.
 */

//============================================

/*!
 @file halfedge_accessor.h
 @brief Definition of pointer-safe half-edge accessors.
 @details This class provides pointer-safe functions to access the content of half-edges.
 */

//============================================

/*!
 @file halfedge_accessor.hpp
 @brief Implementation of pointer-safe half-edge accessors.
 @details This class provides pointer-safe functions to access the content of half-edges.
 */

//============================================

/*!
 @file halfedge_mesh.h
 @brief Definition of a topological mesh made of half-edges.
 @details This class provides a basic API to manipulate the topology of a mesh, using
          the half-edge data structure.
 */

//============================================

/*!
 @file halfedge_mesh.hpp
 @brief Implementation of a topological mesh made of half-edges.
 @details This class provides a basic API to manipulate the topology of a mesh, using
          the half-edge data structure.
 */

//============================================

/*!
 @file halfedge_trgl_mesh.h
 @brief Definition of a topological mesh made of half-edges that define triangles.
 @details This class provides a basic API to manipulate the topology of a mesh, using
          the half-edge data structure to define triangles.
 */

//============================================

/*!
 @file halfedge_trgl_mesh.hpp
 @brief Implementation of a topological mesh made of half-edges that define triangles.
 @details This class provides a basic API to manipulate the topology of a mesh, using
          the half-edge data structure to define triangles.
 */

//============================================

/*!
 @file box3d.h
 @brief Definition of an axis-aligned 3D box.
 @details A 3D box is defined by minimum and maximum X, Y and Z values.
 */

//============================================

/*!
 @file box3d.hpp
 @brief Implementation of an axis-aligned 3D box.
 @details A 3D box is defined by minimum and maximum X, Y and Z values.
 */

//============================================

/*!
 @file column.h
 @brief Definition of a column.
 @details A column is defined by the extrusion of a base shape.
 */

//============================================

/*!
 @file column.hpp
 @brief Implementation of a column.
 @details A column is defined by the extrusion of a base shape.
 */

//============================================

/*!
 @file sphere.h
 @brief Definition of a 3D sphere.
 @details A 3D sphere is represented by its center and its radius.
 */

//============================================

/*!
 @file sphere.hpp
 @brief Implementation of a 3D sphere.
 @details A 3D sphere is represented by its center and its radius.
 */

//============================================

/*!
 @file display_list.h
 @brief Definition of an OpenGL display list.
 @details A display list packs a set of OpenGL instructions to accelerate the
          rendering of the scene.
 */

//============================================

/*!
 @file display_list.cpp
 @brief Implementation of an OpenGL display list.
 @details A display list packs a set of OpenGL instructions to accelerate the
          rendering of the scene.
 */

//============================================

/*!
 @file framebuffer_object.h
 @brief Definition of an OpenGL framebuffer object.
 @details A framebuffer object allows to render to a texture, rather than to the screen.
 */

//============================================

/*!
 @file framebuffer_object.cpp
 @brief Implementation of an OpenGL framebuffer object.
 @details A framebuffer object allows to render to a texture, rather than to the screen.
 */

//============================================

/*!
 @file graphics_settings.h
 @brief Define macros to export functions of the Graphics library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file openGL.h
 @brief Definition and implementation of utility functions to retrieve OpenGL errors.
 @details This class is only able to capture the last error. It is typically meant for
          debugging purposes.
 */

//============================================

/*!
 @file renderbuffer_object.h
 @brief Definition of an OpenGL renderbuffer object.
 @details A renderbuffer object provides an abstract object highly optimized for the rendering.
 */

//============================================

/*!
 @file renderbuffer_object.cpp
 @brief Implementation of an OpenGL renderbuffer object.
 @details A renderbuffer object provides an abstract object highly optimized for the rendering.
 */

//============================================

/*!
 @file camera.h
 @brief Definition of a camera.
 @details A camera defines a point of view from an observer (the eye) to a target point.
 */

//============================================

/*!
 @file camera.cpp
 @brief Implementation of a camera.
 @details A camera defines a point of view from an observer (the eye) to a target point.
 */

//============================================

/*!
 @file camera_manipulator.h
 @brief Definition of an API for camera manipulation.
 @details This is a base class for camera manipulation. The actual interactions with the
          camera have to be defined in derived classes.
 */

//============================================

/*!
 @file camera_manipulator.cpp
 @brief Implementation of an API for camera manipulation.
 @details This is a base class for camera manipulation. The actual interactions with the
          camera have to be defined in derived classes.
 */

//============================================

/*!
 @file camera_manipulator_examine.h
 @brief Definition of camera manipulations dedicated to object examination.
 @details This class allows full rotation around the object, as well as panning and zooming.
 */

//============================================

/*!
 @file camera_manipulator_examine.cpp
 @brief Implementation of camera manipulations dedicated to object examination.
 @details This class allows full rotation around the object, as well as panning and zooming.
 */

//============================================

/*!
 @file camera_manipulator_isometric.h
 @brief Definition of camera manipulations dedicated to isometric maps visualization.
 @details This class allows (optional) horizontal rotation, as well as panning and zooming.
 */

//============================================

/*!
 @file camera_manipulator_isometric.cpp
 @brief Implementation of camera manipulations dedicated to isometric maps visualization.
 @details This class allows (optional) horizontal rotation, as well as panning and zooming.
 */

//============================================

/*!
 @file graphic_resource.h
 @brief Definition of an OpenGL graphic resource.
 @details This class manages OpenGL identifiers.
 */

//============================================

/*!
 @file graphic_resource.cpp
 @brief Implementation of an OpenGL graphic resource.
 @details This class manages OpenGL identifiers.
 */

//============================================

/*!
 @file light.h
 @brief Definition of an OpenGL light source.
 @details A generic light source. Supports infinite, positional and spot lights.
 */

//============================================

/*!
 @file light.cpp
 @brief Implementation of an OpenGL light source.
 @details A generic light source. Supports infinite, positional and spot lights.
 */

//============================================

/*!
 @file material.h
 @brief Definition of an OpenGL material.
 @details A material defines the way a surface catches the light.
 */

//============================================

/*!
 @file material.cpp
 @brief Implementation of an OpenGL material.
 @details A material defines the way a surface catches the light.
 */

//============================================

/*!
 @file scene_light.h
 @brief Definition of an OpenGL light that is directly managed by a scene.
 @details This type of light can be added to a scene as a scene element.
 */

//============================================

/*!
 @file scene_light.cpp
 @brief Implementation of an OpenGL light that is directly managed by a scene.
 @details This type of light can be added to a scene as a scene element.
 */

//============================================

/*!
 @file indexed_mesh_primitives.h
 @brief Definition of indexed primitives (currently covers lines and triangles)
 @details An indexed primitive is a primitive whose vertices are defined by indexes in a vertex array.
 */

//============================================

/*!
 @file indexed_mesh_primitives.cpp
 @brief Implementation of indexed primitives (currently covers lines and triangles)
 @details An indexed primitive is a primitive whose vertices are defined by indexes in a vertex array.
 */

//============================================

/*!
 @file mesh_creator.h
 @brief Definition of an API that defines convenience functions to build a surfacic mesh.
 @details This API works as a state machine, in a similar fashion to the OpenGL API.
 */

//============================================

/*!
 @file mesh_creator.cpp
 @brief Implementation of an API that defines convenience functions to build a surfacic mesh.
 @details This API works as a state machine, in a similar fashion to the OpenGL API.
 */

//============================================

/*!
 @file mesh_renderer.h
 @brief Definition of an API dedicated to rendering a surface mesh.
 @details This class separates two rendering modes: opaque geometry is rendered statically using
          a display list, whereas transparent geometry is rendered dynamically at each frame.
 */

//============================================

/*!
 @file mesh_renderer.cpp
 @brief Definition of an API dedicated to rendering a surface mesh.
 @details This class separates two rendering modes: opaque geometry is rendered statically using
          a display list, whereas transparent geometry is rendered dynamically at each frame.
 */

//============================================

/*!
 @file surface_mesh.h
 @brief Definition of base functions to define a surface mesh.
 @details This class defines the functions common to all surface meshes.
 */

//============================================

/*!
 @file surface_mesh.cpp
 @brief Implementation of base functions to define a surface mesh.
 @details This class defines the functions common to all surface meshes.
 */

//============================================

/*!
 @file trgl_mesh.h
 @brief Definition of a triangulated surface mesh.
 @details This class provides a way to build and render meshes made of triangles.
 */

//============================================

/*!
 @file trgl_mesh.cpp
 @brief Implementation of a triangulated surface mesh.
 @details This class provides a way to build and render meshes made of triangles.
 */

//============================================

/*!
 @file trgl_mesh_group.h
 @brief Definition of a group of triangles in a triangulated surface mesh.
 @details This class provides a container for subgroups of triangles.
 */

//============================================

/*!
 @file trgl_mesh_group.cpp
 @brief Implementation of a group of triangles in a triangulated surface mesh.
 @details This class provides a container for subgroups of triangles.
 */

//============================================

/*!
 @file trgl_mesh_subgroup.h
 @brief Definition of a subgroup of triangles in a triangulated surface mesh.
 @details This class implements a part of a mesh made of triangles.
 */

//============================================

/*!
 @file trgl_mesh_subgroup.cpp
 @brief Implementation of a subgroup of triangles in a triangulated surface mesh.
 @details This class implements a part of a mesh made of triangles.
 */

//============================================

/*!
 @file scene.h
 @brief Definition of a graphic scene.
 @details A graphic scene is a collection of elements that should be rendered in the associated context.
 */

//============================================

/*!
 @file scene.cpp
 @brief Implementation of a graphic scene.
 @details A graphic scene is a collection of elements that should be rendered in the associated context.
 */

//============================================

/*!
 @file scene_element.h
 @brief Definition of an element to be rendered in a scene.
 @details This class provides a draw function that is called by the scene at the rendering step.
 */

//============================================

/*!
 @file scene_element.cpp
 @brief Implementation of an element to be rendered in a scene.
 @details This class provides a draw function that is called by the scene at the rendering step.
 */

//============================================

/*!
 @file shader_defs.h
 @brief Define custom macros necessary to build shaders.
 @details This file allows static linking with glew
 */

//============================================

/*!
 @file shader_object.h
 @brief Definition of a shader object
 @details A shader object is a compiled piece of code that can be used in a shader program
 */

//============================================

/*!
 @file shader_object.cpp
 @brief Implementation of a shader object
 @details A shader object is a compiled piece of code that can be used in a shader program
 */

//============================================

/*!
 @file shader_program.h
 @brief Definition of a GLSL shader program
 @details This class is a wrapper that provides convenience functions to render elements in a
          custom way.
 */

//============================================

/*!
 @file shader_program.cpp
 @brief Implementation of a GLSL shader
 @details This class is a wrapper that provides convenience functions to render elements in a
          custom way.
 */

//============================================

/*!
 @file texture1d.h
 @brief Definition of a wrapper for OpenGL one-dimensional textures.
 @details Provides convenience functions to manipulate 1D textures.
 */

//============================================

/*!
 @file texture1d.cpp
 @brief Implementation of a wrapper for OpenGL one-dimensional textures.
 @details Provides convenience functions to manipulate 1D textures.
 */

//============================================

/*!
 @file texture2d.h
 @brief Definition of a wrapper for OpenGL two-dimensional textures.
 @details Provides convenience functions to manipulate 2D textures.
 */

//============================================

/*!
 @file texture2d.cpp
 @brief Implementation of a wrapper for OpenGL two-dimensional textures.
 @details Provides convenience functions to manipulate 2D textures.
 */

//============================================

/*!
 @file texture3d.h
 @brief Definition of a wrapper for OpenGL three-dimensional textures.
 @details Provides convenience functions to manipulate 3D textures.
 */

//============================================

/*!
 @file texture3d.cpp
 @brief Implementation of a wrapper for OpenGL three-dimensional textures.
 @details Provides convenience functions to manipulate 3D textures.
 */

//============================================

/*!
 @file texture_coordinates.h
 @brief Definition of 1D, 2D and 3d texture coordinates.
 @details Provides wrappers to store and manipulate texture coordinates.
 */

//============================================

/*!
 @file texture_defs.h
 @brief Definition of various enumerators dedicated to texture manipulation.
 @details The enumerators provide a type-safe interface to manipulate GLenum symbolic constants.
 */

//============================================

/*!
 @file texture_coordinates.cpp
 @brief Implementation of 1D, 2D and 3d texture coordinates.
 @details Provides wrappers to store and manipulate texture coordinates.
 */

//============================================

/*!
 @file gl_transformer3d.h
 @brief Definition of a 3D transformer within an OpenGL environment.
 @param The transformer can modify OpenGL matrices, hence be applied directly on the GPU.
 */

//============================================

/*!
 @file gl_transformer3d.cpp
 @brief Implementation of a 3D transformer within an OpenGL environment.
 @param The transformer can modify OpenGL matrices, hence be applied directly on the GPU.
 */

//============================================
/*!
 @file gl_widget.h
 @brief Definition of a widget with an OpenGL window.
 @param The widget renders the scene that it is holding.
 */

//============================================

/*!
 @file gl_widget.cpp
 @brief Implementation of a widget with an OpenGL window.
 @param The widget renders the scene that it is holding.
 */

//============================================

/*!
 @file object.h
 @brief Definition of an object.
 @details This class defines objects to which a state and statistics are associated.
 */

//============================================

/*!
 @file object.cpp
 @brief Implementation of an object.
 @details This class defines objects to which a state and statistics are associated.
 */

//============================================

/*!
 @file object_base.h
 @brief Definition of a generic object.
 @details This class defines base objects, i.e., objects that have a name and an ID.
 */

//============================================

/*!
 @file object_base.cpp
 @brief Implementation of a generic object.
 @details This class defines base objects, i.e., objects that have a name and an ID.
 */

//============================================

/*!
 @file object_container.h
 @brief Definition of a container object.
 @details This class defines objects that can contain inventory objects.
 */

//============================================

/*!
 @file object_container.cpp
 @brief Implementation of a container object.
 @details This class defines objects that can contain inventory objects.
 */

//============================================

/*!
 @file object_inventory.h
 @brief Definition of an inventory object.
 @details This class defines objects that can be placed in a container.
 */

//============================================

/*!
 @file object_inventory.cpp
 @brief Implementation of an inventory object.
 @details This class defines objects that can be placed in a container.
 */

//============================================

/*!
 @file object_world.h
 @brief Definition of a world object.
 @details This class defines objects that have 3d coordinates, scale and
          orientation informations.
 */

//============================================

/*!
 @file object_world.cpp
 @brief Implementation of a world object.
 @details This class defines objects that have 3d coordinates, scale and
          orientation informations.
 */

//============================================

/*!
 @file lock_state.h
 @brief Definition of a lock state.
 @details This class provides support for lockable objects such as doors and containers.
 */

//============================================

/*!
 @file lock_state.cpp
 @brief Implementation of a lock state.
 @details This class provides support for lockable objects such as doors and containers.
 */

//============================================

/*!
 @file statistics.h
 @brief Definition of one single statistic.
 @details A statistic contains a current and a maximum value.
 */

//============================================

/*!
 @file statistics.cpp
 @brief Implementation of one single statistic.
 @details A statistic contains a current and a maximum value.
 */

//============================================

/*!
 @file statistics_manager.h
 @brief Definition of a collection of statistics.
 @details This class provides storage and access to a collection of statistics.
 */

//============================================

/*!
 @file statistics_manager.cpp
 @brief Implementation of a collection of statistics.
 @details This class provides storage and access to a collection of statistics.
 */

//============================================

/*!
 @file displacement.h
 @brief Definition of the displacements that are possible on a cell / to a unit.
 @details This class allows to manipulate which types of displacement are legal.
 */

//============================================

/*!
 @file displacement.cpp
 @brief Implementation of the displacements that are possible on a cell / to a unit.
 @details This class allows to manipulate which types of displacement are legal.
 */

//============================================

/*!
 @file map_cell.h
 @brief Definition of a cell in a map.
 @details This class is solely a descriptor of the cell state, but does not have any
          clue of the cell geometry.
 */

//============================================

/*!
 @file map_cell.hpp
 @brief Implementation of a cell in a map.
 @details This class is solely a descriptor of the cell state, but does not have any
          clue of the cell geometry.
 */

//============================================

/*!
 @file maps_settings.h
 @brief Define macros to export functions of the Maps library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file hex_map.h
 @brief Definition of a map made of hexagonal cells.
 @details A hexagonal map allows displacements towards six neighbor cells.
 */

//============================================

/*!
 @file hex_map.cpp
 @brief Implementation of a map made of hexagonal cells.
 @details A hexagonal map allows displacements towards six neighbor cells.
 */

//============================================

/*!
 @file map.h
 @brief Definition of a generic abstract map.
 @details Handles all generic aspects of the map (types of terrain, local to global coordinate conversion, etc).
 */

//============================================

/*!
 @file map.cpp
 @brief Implementation of a generic abstract map.
 @details Handles all generic aspects of the map (types of terrain, local to global coordinate conversion, etc).
 */

//============================================

/*!
 @file square_map.h
 @brief Definition of a map made of square cells.
 @details A square map allows vertical and lateral displacements, but no diagonal displacement.
 */

//============================================

/*!
 @file square_map.cpp
 @brief Implementation of a map made of square cells.
 @details A square map allows vertical and lateral displacements, but no diagonal displacement.
 */

//============================================

/*!
 @file terrain_descriptor.h
 @brief Definition of a set of terrain descriptions.
 @details This class allows to manage the description of a given terrain.
 */

//============================================

/*!
 @file terrain_descriptor.cpp
 @brief Implementation of a set of terrain descriptions.
 @details This class allows to manage the description of a given terrain.
 */

//============================================

/*!
 @file hex_map_renderer.h
 @brief This is a sandbox for rendering a hexagonal map.
 @details Sandbox for rendering a hexagonal map.
 */

//============================================

/*!
 @file hex_map_renderer.cpp
 @brief This is a sandbox for rendering a hexagonal map.
 @details Sandbox for rendering a hexagonal map.
 */

//============================================

/*!
 @file square_map_renderer.h
 @brief This is a sandbox for rendering a square map.
 @details Sandbox for rendering a square map.
 */

//============================================

/*!
 @file square_map_renderer.cpp
 @brief This is a sandbox for rendering a square map.
 @details Sandbox for rendering a square map.
 */

//============================================

/*!
 @file interval.h
 @brief Definition of an interval of values.
 @details An interval of values is simply defined by (optional) minimum and maximum values.
 */

//============================================

/*!
 @file interval.hpp
 @brief Implementation of an interval of values.
 @details An interval of values is simply defined by (optional) minimum and maximum values.
 */

//============================================

/*!
 @file multimedia_settings.h
 @brief Define macros to export functions of the Multimedia library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file music.h
 @brief Definition of a music player.
 @details This class defines convenience functions to manipulate a music being played.
 */

//============================================

/*!
 @file music.cpp
 @brief Implementation of a music player.
 @details This class defines convenience functions to manipulate a music being played.
 */

//============================================

/*!
 @file music_observer.h
 @brief Definition of an observer for music players.
 @details This class tracks changes in a music. It is especially useful to detect when a music has
          finished playing, to start a new music.
 */

//============================================

/*!
 @file music_observer.cpp
 @brief Implementation of an observer for music players.
 @details This class tracks changes in a music. It is especially useful to detect when a music has
          finished playing, to start a new music.
 */

//============================================

/*!
 @file unit_test.h
 @brief Definition of the unit tests of GameEngine.
 @details Unit tests are used to minimize bugs present in the code.
 */

//============================================

/*!
 @file unit_test.cpp
 @brief Implementation of the unit tests of GameEngine.
 @details Unit tests are used to minimize bugs present in the code.
 */

//============================================

/*!
 @file unit_test_settings.h
 @brief Define macros to export functions of the UnitTest library in the appropriate dll.
 @details Allow to export functions in the appropriate dll.
 */

//============================================

/*!
 @file ut_ai_funnel.cpp
 @brief Implementation of the unit tests for funnels.
 @details Check the GameEngine::Funnel class.
 */

//============================================

/*!
 @file ut_core_graph.cpp
 @brief Implementation of the unit tests for graphs.
 @details Check the GameEngine::Graph class.
 */

//============================================

/*!
 @file ut_core_factory.cpp
 @brief Implementation of the unit tests for factories.
 @details Check the GameEngine::FactoryManager and GameEngine::FactoryBuilder classes.
 */

//============================================

/*!
 @file ut_core_quadtree.cpp
 @brief Implementation of the unit tests for quad trees.
 @details Check the GameEngine::Quadtree and the GameEngine::QuadtreeNode classes.
 */

//============================================

/*!
 @file ut_core_rtti.cpp
 @brief Implementation of the unit tests for the RTTI support.
 @details Check the GameEngine::RttiManager class.
 */

//============================================

/*!
 @file ut_core_octree.cpp
 @brief Implementation of the unit tests for octrees.
 @details Check the GameEngine::Octree and the GameEngine::OctreeNode classes.
 */

//============================================

/*!
 @file ut_geometry_angle.hpp
 @brief Implementation of the unit tests for angles.
 @details Check the GameEngine::Angle class.
 */

//============================================

/*!
 @file ut_geometry_box2d.hpp
 @brief Implementation of the unit tests for 2D boxes.
 @details Check the GameEngine::Box2d class.
 */

//============================================

/*!
 @file ut_geometry_box3d.hpp
 @brief Implementation of the unit tests for 3D boxes.
 @details Check the GameEngine::Box3d class.
 */

//============================================

/*!
 @file ut_geometry_circle2d.hpp
 @brief Implementation of the unit tests for 2D circles.
 @details Check the GameEngine::Circle2d class.
 */

//============================================

/*!
 @file ut_geometry_circle3d.hpp
 @brief Implementation of the unit tests for 3D circles.
 @details Check the GameEngine::Circle3d class.
 */

//============================================

/*!
 @file ut_geometry_hexagon2d.hpp
 @brief Implementation of the unit tests for 2D hexagons.
 @details Check the GameEngine::Hexagon2d class.
 */

//============================================

/*!
 @file ut_geometry_line2d.hpp
 @brief Implementation of the unit tests for 2D lines.
 @details Check the GameEngine::Line2d class.
 */

//============================================

/*!
 @file ut_geometry_line3d.hpp
 @brief Implementation of the unit tests for 3D lines.
 @details Check the GameEngine::Line3d class.
 */

//============================================

/*!
 @file ut_geometry_transformer2d_orientation.hpp
 @brief Implementation of the unit tests for 2D orientation transformers.
 @details Check the GameEngine::Transformer2dOrientation class.
 */

//============================================

/*!
 @file ut_geometry_transformer3d_orientation.hpp
 @brief Implementation of the unit tests for 3D orientation transformers.
 @details Check the GameEngine::Transformer3dOrientation class.
 */

//============================================

/*!
 @file ut_geometry_sphere.hpp
 @brief Implementation of the unit tests for 3D spheres.
 @details Check the GameEngine::Sphere class.
 */

//============================================

/*!
 @file ut_geometry_transformer2d.hpp
 @brief Implementation of the unit tests for 2D point transformers.
 @details Check the GameEngine::Transformer2d class.
 */

//============================================

/*!
 @file ut_geometry_transformer3d.hpp
 @brief Implementation of the unit tests for 3D point transformers.
 @details Check the GameEngine::Transformer3d class.
 */

//============================================

/*!
 @file ut_geometry_trgl2d.hpp
 @brief Implementation of the unit tests for 2D triangles.
 @details Check the GameEngine::Trgl2d class.
 */

//============================================

/*!
 @file ut_geometry_trgl2dfast.hpp
 @brief Implementation of the unit tests for fast 2D triangles.
 @details Check the GameEngine::Trgl2dFast class.
 */

//============================================

/*!
 @file ut_geometry_trgl3d.hpp
 @brief Implementation of the unit tests for 3D triangles.
 @details Check the GameEngine::Trgl3d class.
 */

//============================================

/*!
 @file ut_geometry_trgl3dfast.hpp
 @brief Implementation of the unit tests for fast 3D triangles.
 @details Check the GameEngine::Trgl3dFast class.
 */

//============================================

/*!
 @file ut_geometry_halfedge_trgl_mesh.cpp
 @brief Implementation of the unit tests for half-edge meshes.
 @details Check the GameEngine::HalfEdgeMesh class.
 */

//============================================

/*!
 @file ut_maps_displacement_iterator.cpp
 @brief Implementation of the unit tests for displacement iterators.
 @details Check the GameEngine::Displacement::Iterator class.
 */
